<?php 
	/**
	* Auto-généré classe Machine
	*/

	class Machine extends \Core\ORM\Modele {
		/**
		* @var string $nom_machine
		*/
		protected $nom_machine;
		/**
		* @var string $adresse_ip
		*/
		protected $adresse_ip;
		/**
		* @var string $position_physique
		*/
		protected $position_physique;
        /**
		* @var string $community
		*/
		protected $community;
		/**
		* @var \DateTime $date_affectation
		*/
		protected $date_affectation;
		/**
		* @var \Core\ORM\TypeMachine $typeMachine
		*/
		protected $typeMachine;
		/**
		* @var \Core\ORM\Service $service
		*/
		protected $service;

		/**
		* Constructeur complet
		*
		* @var int $id
		* @var string $nom_machine
		* @var string $adresse_ip
		* @var string $position_physique
        * @var string $community
		* @var \DateTime $date_affectation
		* @var \Core\ORM\TypeMachine $typemachine
		* @var \Core\ORM\Service $service
		*
		* @return void
		*/
		public function __construct($id, $nom_machine, $adresse_ip, $position_physique, $community, $date_affectation, $typeMachine, 
                                    $service) {
			parent::__construct($id);
			$this->setNomMachine($nom_machine);
			$this->setAdresseIp($adresse_ip);
			$this->setPositionPhysique($position_physique);
            $this->setCommunity($community);
			$this->setDateAffectation($date_affectation);
			$this->setTypeMachine($typeMachine);
			$this->setService($service);
		}

        /**
        * Retourne le nom de cette Machine
        * 
        * @return string
        */
        public function __toString() {
            return $this->nom_machine;
        }
        
        /**
        * Retourne toutes les Restreindre de cette Machine
        * 
        * @return \Restreindre
        */
        public function getRestreindres() {
            return Restreindre::recherche(array("machine" => $this));
        }
        
        /**
        * Supprime tout les restreindres de cete machine
        * 
        * @return int
        */
        public function reinitialisationRestreindre() {
            $restreindres = Restreindre::recherche(array("machine" => $this));
            foreach($restreindres as $restreindre) {
                $restreindre->suppression();
            }
        }
        
        /**
        * Retourne tout les évenements non séléctionnés pour cette machine
        * 
        * @return \TypeEvenement
        */
        public function getEvenementsRestants() {
            $where =    "id NOT IN (SELECT r.type_evenement_id FROM restreindre r WHERE r.machine_id = ".intval($this->getId()).")";
            return TypeEvenement::recherche($where);
        }
        
		//GETTERS ET SETTERS
		/**
		* Getter de l'attribut nom_machine
		*
		* @return string
		*/
		public function getNomMachine() {
			return $this->nom_machine;
		}
		/**
		* Setter de l'attribut nom_machine
		*
		* @param string $nom_machine		*
		* @return void
		*/
		public function setNomMachine($nom_machine) {
			$this->nom_machine=$nom_machine;
		}
		/**
		* Getter de l'attribut adresse_ip
		*
		* @return string
		*/
		public function getAdresseIp() {
			return $this->adresse_ip;
		}
		/**
		* Setter de l'attribut adresse_ip
		*
		* @param string $adresse_ip		*
		* @return void
		*/
		public function setAdresseIp($adresse_ip) {
			$this->adresse_ip=$adresse_ip;
		}
		/**
		* Getter de l'attribut position_physique
		*
		* @return string
		*/
		public function getPositionPhysique() {
			return $this->position_physique;
		}
		/**
		* Setter de l'attribut position_physique
		*
		* @param string $position_physique		*
		* @return void
		*/
		public function setPositionPhysique($position_physique) {
			$this->position_physique=$position_physique;
		}
        /**
		* Getter de l'attribut community
		*
		* @return string
		*/
		public function getCommunity() {
			return $this->community;
		}
		/**
		* Setter de l'attribut community
		*
		* @param string $community		*
		* @return void
		*/
		public function setCommunity($community) {
			$this->community=$community;
		}
		/**
		* Getter de l'attribut date_affectation
		*
		* @return \DateTime
		*/
		public function getDateAffectation($format="Y-m-d") {
			return \Utils\Outils::getterDate($this->date_affectation, $format);
		}
		/**
		* Setter de l'attribut date_affectation
		*
		* @return void
		*/
		public function setDateAffectation($date_affectation) {
			$this->date_affectation=\Utils\Outils::setterDate($date_affectation);
		}
		/**
		* Getter de l'attribut typemachine
		*
		* @return \Core\ORM\TypeMachine
		*/
		public function getTypeMachine() {
			return $this->typeMachine;
		}
		/**
		* Setter de l'attribut typemachine
		*
		* @param \Core\ORM\TypeMachine $typemachine		*
		* @return void
		*/
		public function setTypeMachine($typemachine) {
			$this->typeMachine=$typemachine;
		}
		/**
		* Getter de l'attribut service
		*
		* @return \Core\ORM\Service
		*/
		public function getService() {
			return $this->service;
		}
		/**
		* Setter de l'attribut service
		*
		* @param \Core\ORM\Service $service		*
		* @return void
		*/
		public function setService($service) {
			$this->service=$service;
		}
		public static function getAttributs() {
			return array(
							new Core\ORM\Attributs\String("nom_machine", false, 30, false),
							new Core\ORM\Attributs\String("adresse_ip", false, 15, false),
							new Core\ORM\Attributs\String("position_physique", false, 20, false),
                            new Core\ORM\Attributs\String("community", false, 20, false),
							new Core\ORM\Attributs\DateTime("date_affectation", false, "Y-m-d", "date"),
							new Core\ORM\Attributs\Objet("TypeMachine", "type_machine_id", false, "11"),
							new Core\ORM\Attributs\Objet("Service", "service_id", false, "11")
						);
		}

		public static function getTable() {
			return "machine";
		}
	}
?>